{
 "cells": [
  {
   "cell_type": "code",
   "id": "initial_id",
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2025-08-18T14:36:56.977219Z",
     "start_time": "2025-08-18T14:36:43.861286Z"
    }
   },
   "source": [
    "from langchain_openai import ChatOpenAI\n",
    "import os\n",
    "chat_model = ChatOpenAI(\n",
    "    # 若没有配置环境变量，请用百炼API Key将下行替换为：api_key=\"sk-xxx\",\n",
    "    api_key=os.getenv(\"DASH_SCOPE_API_KEY\"), # 如何获取API Key：https://help.aliyun.com/zh/model-studio/developer-reference/get-api-key\n",
    "    base_url=\"https://dashscope.aliyuncs.com/compatible-mode/v1\",\n",
    "    model=\"qwen-plus\",\n",
    "    temperature=0.8,\n",
    "    max_tokens=60,\n",
    ")\n",
    "\n",
    "# 设定 AI 的角色和目标\n",
    "role_template = \"你是一个为花店电商公司工作的AI助手, 你的目标是帮助客户根据他们的喜好做出明智的决定\"\n",
    "\n",
    "# CoT 的关键部分，AI 解释推理过程，并加入一些先前的对话示例（Few-Shot Learning）\n",
    "cot_template = \"\"\"\n",
    "作为一个为花店电商公司工作的AI助手，我的目标是帮助客户根据他们的喜好做出明智的决定。 \n",
    "\n",
    "我会按部就班的思考，先理解客户的需求，然后考虑各种鲜花的涵义，最后根据这个需求，给出我的推荐。\n",
    "同时，我也会向客户解释我这样推荐的原因。\n",
    "\n",
    "示例 1:\n",
    "  人类：我想找一种象征爱情的花。\n",
    "  AI：首先，我理解你正在寻找一种可以象征爱情的花。在许多文化中，红玫瑰被视为爱情的象征，这是因为它们的红色通常与热情和浓烈的感情联系在一起。因此，考虑到这一点，我会推荐红玫瑰。红玫瑰不仅能够象征爱情，同时也可以传达出强烈的感情，这是你在寻找的。\n",
    "\n",
    "示例 2:\n",
    "  人类：我想要一些独特和奇特的花。\n",
    "  AI：从你的需求中，我理解你想要的是独一无二和引人注目的花朵。兰花是一种非常独特并且颜色鲜艳的花，它们在世界上的许多地方都被视为奢侈品和美的象征。因此，我建议你考虑兰花。选择兰花可以满足你对独特和奇特的要求，而且，兰花的美丽和它们所代表的力量和奢侈也可能会吸引你。\n",
    "\"\"\"\n",
    "\n",
    "from langchain.prompts import ChatPromptTemplate, HumanMessagePromptTemplate, SystemMessagePromptTemplate\n",
    "system_prompt_role = SystemMessagePromptTemplate.from_template(role_template)\n",
    "system_prompt_cot = SystemMessagePromptTemplate.from_template(cot_template)\n",
    "\n",
    "# 用户的询问\n",
    "human_template = \"{human_input}\"\n",
    "human_prompt = HumanMessagePromptTemplate.from_template(human_template)\n",
    "\n",
    "# 将以上所有信息结合为一个聊天提示\n",
    "chat_prompt = ChatPromptTemplate.from_messages([system_prompt_role, system_prompt_cot, human_prompt])\n",
    "\n",
    "prompt = chat_prompt.format_prompt(human_input=\"我想为我的女朋友购买一些花。她喜欢粉色和紫色。你有什么建议吗?\")\n",
    "\n",
    "# 调用大模型\n",
    "output = chat_model.invoke(prompt)\n",
    "\n",
    "print(output.content)\n"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "我完全理解你的需求：你想为你的女朋友挑选一些花，她喜欢粉色和紫色这两种颜色。这是一个非常美好的心意！我们可以结合颜色偏好和花语来选择一些既有美感又富有情感的花束。\n",
      "\n",
      "### 我的推荐：\n",
      "**1. 粉色玫瑰 + 紫色洋桔梗的组合花束**\n",
      "\n",
      "- **粉色玫瑰**：象征温柔的爱、感激和初恋，非常适合表达你对女友细腻而深情的情感。\n",
      "- **紫色洋桔梗**：象征优雅、感激和永恒的爱，它的紫色正好符合她的喜好，而且花型优雅，非常吸引人。\n",
      "\n",
      "这个组合不仅颜色柔和、浪漫，也传达了“我欣赏你的优雅，珍惜我们的感情”的美好寓意。\n",
      "\n",
      "---\n",
      "\n",
      "**2. 粉色郁金香 + 紫色风信子**\n",
      "\n",
      "- **粉色郁金香**：代表完美的爱、纯真和幸福，是一种非常甜美的花。\n",
      "- **紫色风信子**：象征恒久、希望与温柔的爱，同时它的香味也非常迷人。\n",
      "\n",
      "这组搭配适合想要表达“你是我的幸福，我希望我们的爱长久而美好”的情感。\n",
      "\n",
      "---\n",
      "\n",
      "**3. 混搭花束（粉色绣球 + 紫色桔梗 + 白色满天星）**\n",
      "\n",
      "如果你想要一个更大气、更丰富的花束，可以选择这样的混搭风格。绣球花带来浪漫感，桔梗增添层次，满天星作为点缀则象征点点星光般的爱意。\n",
      "\n",
      "---\n",
      "\n",
      "### 为什么这样推荐？\n",
      "- 粉色和紫色都属于柔和、浪漫的色调，非常适合情侣之间表达爱意。\n",
      "- 不同花材的搭配不仅视觉上更丰富，也能传达多层次的情感。\n",
      "- 这些花卉都具有良好的花语寓意，适合用来表达爱、温柔、感激和恒久。\n",
      "\n",
      "如果你愿意告诉我更多关于她的性格或你们的关系阶段，我还可以为你定制更个性化的推荐哦！ 🌸\n"
     ]
    }
   ],
   "execution_count": 2
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
